/**
 * @fileoverview Contiene la declaración de la página principal del proyecto
 * @author Carlos Farias Vidal
 * @version 1.0.0
 * @description fecha 22-08-2011
 * @description Ultimo modificador: Carlos Farias Vidal
 * @description Fecha última modificacion: 22-08-2011
 */

Ext.namespace('AdministracionUsuarios');

var v_str_loginUsuario = '';

AdministracionUsuarios.url = 'ConeccionesAJAX/AdministracionUsuariosAJAX.' + extensionServidor
AdministracionUsuarios.idUsuario = 0;
AdministracionUsuarios.rutUsuario = 0;
AdministracionUsuarios.Estado = true;
AdministracionUsuarios.cantRegXpaginaAdmUsuario = 50;
AdministracionUsuarios.txtFiltroGrillaAdmUsuariosRut = comunes.crear_text_formulario('AdministracionUsuarios_txtFiltroGrillaAdmUsuariosRut', '', 11,0, 12, false, false, false, '', '','AdministracionUsuarios_txtFiltroGrillaAdmUsuariosNombreUsuario');
AdministracionUsuarios.txtFiltroGrillaAdmUsuariosNombreUsuario = comunes.crear_text_formulario(	'AdministracionUsuarios_txtFiltroGrillaAdmUsuariosNombreUsuario','', 15, 0, 20, false, false, false, '', '','AdministracionUsuarios_btnBuscar');

AdministracionUsuarios.camposStoreGrillaAdmUsuarios = ['USUS_NID', 'ESES_NID','PEPE_NID', 'ESES_DESCRIPCION', 'PEPE_NOMBRE', 'USUS_RUT','USUS_USUARIO', 'USUS_NOMBRE', 'USUS_APPATERNO', 'USUS_APMATERNO','USUS_EMAIL', 'USUS_TELEFONO','USUS_FEC_REGISTRO','USUS_FEC_MODIFICACION'];

AdministracionUsuarios.storeGrillaAdmUsuarios = new Ext.data.JsonStore({
    id : 'storeGrillaAdmUsuarios',
    name : 'storeGrillaAdmUsuarios',
    root : 'data',
    totalProperty : 'totalRows',
    remoteSort : false,
    autoLoad : true,
    baseParams : {
        accion : 'listarUsuarios',
        rut : AdministracionUsuarios.txtFiltroGrillaAdmUsuariosRut.getValue(),
        usuario : AdministracionUsuarios.txtFiltroGrillaAdmUsuariosNombreUsuario
        .getValue(),
        limit : AdministracionUsuarios.cantRegXpaginaAdmUsuario
    },
    successProperty : 'success',
    fields : AdministracionUsuarios.camposStoreGrillaAdmUsuarios,
    url : AdministracionUsuarios.url,
    listeners: {
        loadexception: function(algoRaro, json){
            if (json.reader.jsonData.errors.id){
                Ext.MessageBox.show({
                    title: 'INFORMACION',
                    msg: json.reader.jsonData.errors.desc,
                    buttons: Ext.Msg.OK,
                    icon: Ext.MessageBox.INFO
                });
            }
        //                else{
        //                    eval(json.reader.jsonData.errors);
        //                }
        }
    }

});

AdministracionUsuarios.storeGrillaAdmUsuarios.setDefaultSort("USUS_RUT", "DESC");

AdministracionUsuarios.columnasGrillaAdmUsuarios = new Ext.grid.ColumnModel([
    new Ext.grid.RowNumberer(), {
        id: 'USUS_RUT',
        header: 'RUT',
        dataIndex: 'USUS_RUT',
        sortable: true,
        width: 100,
        align: 'left',
        menuDisabled: false,
        hideable: false
    }, {
        id: 'USUS_USUARIO',
        header: 'USUARIO',
        dataIndex: 'USUS_USUARIO',
        sortable: true,
        width: 150,
        align: 'left',
        menuDisabled: false,
        hideable: false
    }, {
        id: 'USUS_NOMBRE',
        header: 'NOMBRE',
        dataIndex: 'USUS_NOMBRE',
        sortable: true,
        width: 170,
        align: 'left',
        menuDisabled: false
    }, {
        id: 'USUS_APPATERNO',
        header: 'A.PATERNO',
        dataIndex: 'USUS_APPATERNO',
        sortable: true,
        width: 150,
        align: 'left',
        menuDisabled: false
    }, {
        id: 'USUS_APMATERNO',
        header: 'A.MATERNO',
        dataIndex: 'USUS_APMATERNO',
        sortable: true,
        width: 150,
        align: 'left',
        menuDisabled: false
    }, {
        id: 'PEPE_NOMBRE',
        header: 'PERFIL',
        dataIndex: 'PEPE_NOMBRE',
        sortable: true,
        width: 150,
        align: 'left',
        menuDisabled: false
    }, {
        id: 'USUS_EMAIL',
        header: 'CORREO',
        dataIndex: 'USUS_EMAIL',
        sortable: true,
        width: 300,
        align: 'left',
        menuDisabled: false
    }, {
        id: 'ESES_DESCRIPCION',
        header: 'ESTADO',
        dataIndex: 'ESES_DESCRIPCION',
        sortable: true,
        width: 120,
        align: 'left',
        menuDisabled: false
    }, {
        xtype: 'actioncolumn',
        header: 'ELIMINAR',
        align: 'center',
        sortable: false,
        hideable: false,
        menuDisabled: true,
        width: 75,
        items: [{
            icon: '../img/icons/botones/usuarioBorrar.ico',
            tooltip: 'Eliminar usuario',
            handler: function(grid, rowIndex, colIndex) {
                //v_str_loginUsuario

                grid.getSelectionModel().selectRow(rowIndex);
                var USUS_USUARIO = AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios.record.data.USUS_USUARIO;
                if (USUS_USUARIO.toUpperCase() == v_str_loginUsuario.toUpperCase()) {
                    Ext.MessageBox.show({
                        title: 'ADVERTENCIA',
                        msg: 'No puede eliminar el usuario con el que se encuentra conectado.',
                        buttons: Ext.Msg.OK,
                        icon: Ext.MessageBox.WARNING
                    });
                }
                else {
                    Ext.MessageBox.confirm('ALERTA', '¿Esta seguro que desea eliminar el usuario ' + USUS_USUARIO + '?', function(btn) {
                        if (btn == 'yes') {
                            AdministracionUsuarios.fncEliminarUsuario(rowIndex);
                        }
                    });
                }
                                
            }
}]
}]);

AdministracionUsuarios.fncReiniciarStore = function() {
    AdministracionUsuarios.paramGrillaAdmUsuarios = {
        params : {
            accion : 'listarUsuarios',
            rut : AdministracionUsuarios.txtFiltroGrillaAdmUsuariosRut.getValue(),
            usuario : AdministracionUsuarios.txtFiltroGrillaAdmUsuariosNombreUsuario.getValue(),
            limit : AdministracionUsuarios.cantRegXpaginaAdmUsuario
        }
    }
    AdministracionUsuarios.storeGrillaAdmUsuarios.baseParams = AdministracionUsuarios.paramGrillaAdmUsuarios.params;
    AdministracionUsuarios.storeGrillaAdmUsuarios.reload();
}

AdministracionUsuarios.btnReiniciar = new Ext.Button({
    iconCls : 'btnReiniciar',
    id : 'btnReiniciar',
    name : 'btnReiniciar',
    text : 'Reiniciar',
    handler : function() {
        AdministracionUsuarios.txtFiltroGrillaAdmUsuariosRut.setValue('');
        AdministracionUsuarios.txtFiltroGrillaAdmUsuariosNombreUsuario.setValue('');
        AdministracionUsuarios.fncReiniciarStore();
    }
});

AdministracionUsuarios.btnBuscar = new Ext.Button({
    iconCls : 'btnBuscar',
    id : 'AdministracionUsuarios_btnBuscar',
    name : 'AdministracionUsuarios_btnBuscar',
    text : 'Buscar',
    handler : function() {
        AdministracionUsuarios.fncReiniciarStore();
    }
});

AdministracionUsuarios.btnAgregar = new Ext.Button({
    iconCls : 'btnUsuarioAgregar',
    id : 'btnAgregar',
    name : 'btnAgregar',
    text : 'Agregar',
    handler : function() {
        AdministracionUsuarios.idUsuario = 0;
        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario('NEW');
    }
});

AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios = new Ext.grid.RowSelectionModel(
{
    singleSelect : false,
    listeners : {
        rowselect : function(sm, row, rec) {
            AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios.row = row;
            AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios.record = rec;
            AdministracionUsuarios.idUsuario = AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios.record.data.USUS_NID;
        }
    }
});

AdministracionUsuarios.toolBalGrilla = new Ext.PagingToolbar({
    pageSize : AdministracionUsuarios.cantRegXpaginaAdmUsuario,
    store : AdministracionUsuarios.storeGrillaAdmUsuarios,
    displayInfo : true,
    displayMsg : 'INFO: Para editar haga Doble Click. Listando usuarios {0} - {1} de {2}',
    emptyMsg : "No se encontraron usuarios."
})

AdministracionUsuarios.grillaAdmUsuarios = new Ext.grid.GridPanel({
    iconCls: 'btnUsuarioConectado',
    id : 'grillaAdmUsuarios',
    name : 'grillaAdmUsuarios',
    title : 'Administración de usuarios',
    store : AdministracionUsuarios.storeGrillaAdmUsuarios,
    cm : AdministracionUsuarios.columnasGrillaAdmUsuarios,
    stripeRows : true,
    anchor : '100% 100%',
    autoScroll : true,
    loadMask : true,
    columnLines : true,
    tbar : ['Rut: ',AdministracionUsuarios.txtFiltroGrillaAdmUsuariosRut,'|',
    'Usuario: ',AdministracionUsuarios.txtFiltroGrillaAdmUsuariosNombreUsuario,'|',
    AdministracionUsuarios.btnBuscar,'|',
    AdministracionUsuarios.btnAgregar,'|',
    AdministracionUsuarios.btnReiniciar],
    bbar : AdministracionUsuarios.toolBalGrilla,
    sm : AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios
});

AdministracionUsuarios.grillaAdmUsuarios.on('rowdblClick', function() {
    if (AdministracionUsuarios.grillaAdmUsuarios.getSelectionModel().getSelected() != undefined) {
        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario('EDIT');
    }
});

AdministracionUsuarios.fncCreaVenatanaFormularioUsuario = function(p_str_modo) {

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil = ['PEPE_NID', 'PEPE_NOMBRE'];
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.CamposStore_cmbEstado = ['ESES_NID', 'ESES_DESCRIPCION'];
	
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Store_cmbPerfil = new Ext.data.JsonStore(
    {
        root : 'data',
        totalProperty : 'totalRows',
        autoLoad : false,
        remoteSort : false,
        mode : 'remote',
        baseParams : {
            accion : 'listarPerfiles'
        },
        successProperty : 'success',
        fields : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil,
        url : AdministracionUsuarios.url,
        listeners: {
            loadexception: function(algoRaro, json){
                if (json.reader.jsonData.errors.id){
                    Ext.MessageBox.show({
                        title: 'INFORMACION',
                        msg: json.reader.jsonData.errors.desc,
                        buttons: Ext.Msg.OK,
                        icon: Ext.MessageBox.INFO
                    });
                }
            }
        }
    });
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Store_cmbEstado = new Ext.data.JsonStore(
    {
        root : 'data',
        totalProperty : 'totalRows',
        autoLoad : false,
        remoteSort : false,
        mode : 'remote',
        baseParams : {
            accion : 'listarEstadosUsuarios'
        },
        successProperty : 'success',
        fields : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.CamposStore_cmbEstado,
        url : AdministracionUsuarios.url,
        listeners: {
            loadexception: function(algoRaro, json){
                if (json.reader.jsonData.errors.id){
                    Ext.MessageBox.show({
                        title: 'INFORMACION',
                        msg: json.reader.jsonData.errors.desc,
                        buttons: Ext.Msg.OK,
                        icon: Ext.MessageBox.INFO
                    });
                }
            }
        }
    });

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtRut','RUT',11,0,12,true,true,false,'ValidaRut','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtUsuario','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtUsuario','Usuario',15,6,20,true,true,false,'','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtEmail','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmail = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtEmail','Email',20,0,100,true,true,false,'validaEmail','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtNombres','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtNombres = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtNombres','Nombres',20,0,50,true,true,false,'','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtAPaterno','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAPaterno = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtAPaterno','Apellido Paterno',15,0,50,true,true,false,'','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtAMaterno','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAMaterno = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtAMaterno','Apellido Materno',20,0,50,false,false,false,'','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtTelefono','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtTelefono = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtTelefono','Teléfono',20,0,15,false,false,false,'','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_cmbPerfil','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil = comunes.crear_combobox_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_cmbPerfil','Perfil',15,true,true,false,'','',AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Store_cmbPerfil,'remote', 'Seleccione...','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_cmbEstado');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil.on ('beforequery', function(qe){
        delete qe.combo.lastQuery;
    });
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbEstado = comunes.crear_combobox_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_cmbEstado','Estado',20,true,true,false,'','',AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Store_cmbEstado,'remote', 'Seleccione...','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Boton_Guardar');
    //AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmpresa = comunes.crear_text_formulario('AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Campo_txtEmpresa','Empresa',11,0,50,0,true,false,'','','AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Boton_Guardar','CajaMayus');
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.on('change', function(){
        if(AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.validate()){
            AdministracionUsuarios.idUsuario = 0;
            AdministracionUsuarios.rutUsuario = AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.getValue();
            AdministracionUsuarios.fncBuscarDatosUsuario();
        }
    });

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.on('blur', function() {
        if ((AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.getValue() != '') && (AdministracionUsuarios.idUsuario == 0)) {
            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.setValue(FormatearRut(AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.getValue()));
        }
    });

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar = new Ext.Button({
        iconCls : (p_str_modo == 'NEW')?'btnUsuarioAgregar':'btnUsuarioEditar',
        id : 'AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Boton_Guardar',
        name : 'AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Boton_Guardar',
        text : 'Crear Usuario',
        formBind : true,
        handler : function() {
            AdministracionUsuarios.fncGrabaDatosUsuarios();
        }
    });

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Formulario = new Ext.FormPanel(
    {
        id : 'AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Formulario',
        name : 'AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Formulario',
        labelAlign : 'left',
        frame : true,
        defaults : {
            bodyStyle : 'padding: 0px 0px 0px 0px'
        },
        monitorValid : true,
        autoDestroy : true,
        items : [{
            xtype : 'fieldset',
            columnWidth : 0.2,
            title : 'Información del Usuario',
            collapsible : false,
            autoHeight : true,
            monitorValid : true,
            defaults : {
                bodyStyle : 'padding: 0px 0px 0px 0px'
            },
            // width :605,
            items : [{
                layout : 'column',
                items : [{
                    labelWidth : 80,
                    columnWidth : .33,
                    layout : 'form',
                    items : [AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut,
                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtNombres,
                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtTelefono]
                }, {
                    labelWidth : 110,
                    columnWidth : .33,
                    layout : 'form',
                    items : [AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario,
                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAPaterno,
                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil]
                }, {
                    labelWidth : 100,
                    columnWidth : .33,
                    layout : 'form',
                    items : [AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmail,
                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAMaterno,
                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbEstado]
                }, {
                    labelWidth : 80,
                    columnWidth : .33,
                    layout : 'form',
                    items : [/*AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmpresa*/]
                }]
            }]
        }],
        buttons : [AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar],
        buttonAlign : 'center'
    });

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Formulario.getForm().reset();

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana = new Ext.Window({
        iconCls: 'winUsuario',
        id : 'AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Ventana',
        name : 'AdministracionUsuarios_fncCreaVenatanaFormularioUsuario_Ventana',
        title : '',
        layout : 'fit',
        width : 920,
        autoDestroy : true,
        plain : true,
        modal : true,
        border : true,
        closable : true,
        maximizable : false,
        minimizable : false,
        resizable : false,
        closeAction : 'close',
        defaults : {
            bodyStyle : 'padding: 0px 0px 0px 0px',
            autoHeight : true
        },
        items : [AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Formulario],
        constrainHeader: true
    });

    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.tabIndex = 1;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.tabIndex = 2;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmail.tabIndex = 3;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtNombres.tabIndex = 4;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAPaterno.tabIndex = 5;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAMaterno.tabIndex = 6;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtTelefono.tabIndex = 7;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil.tabIndex = 8;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbEstado.tabIndex = 9;
    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar.tabIndex = 10;

    if (p_str_modo == 'EDIT') {
        AdministracionUsuarios.fncBuscarDatosUsuario();
    }

    if (p_str_modo == 'NEW') {
        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana.setTitle('Creación de usuario');
        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.focus(true, 500);
        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana.show();
    }
}

AdministracionUsuarios.fncBuscarDatosUsuario = function(){
    var process = new Ext.ProgressBar({
        text : 'Buscando datos...'
    });

    var winProcess = new Ext.Window({
        closable : false,
        collapsible : false,
        draggable : false,
        resizable : false,
        layout : 'fit',
        width : 200,
        height : 40,
        plain : true,
        modal : true,
        items : process
    });
    winProcess.show();
    Runner.run(process, 3, function() {
        process.updateText('Espere...');
    });

    Ext.Ajax.timeout = 90000000;
    // Ext.MessageBox.wait('Obteniendo datos...');
    Ext.Ajax.request({
        url : AdministracionUsuarios.url,
        method : 'POST',
        timeout : 30000,
        params : {
            accion : 'obtenerDatosUsuario',
            idUsuario : AdministracionUsuarios.idUsuario,
            rut: AdministracionUsuarios.rutUsuario
        },
        success : function(resp) {
            if (resp.responseText != 'nosession') {
                AdministracionUsuarios.obj = Ext.util.JSON.decode(resp.responseText);
                winProcess.hide();
                if (AdministracionUsuarios.obj.success) {
                    if (AdministracionUsuarios.obj.created.length > 0){
                        if (AdministracionUsuarios.obj.created) {
                            if (AdministracionUsuarios.obj.created[0].PEPE_NID != 0){
                                AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Store_cmbPerfil.loadData({
                                    data : [{
                                        PEPE_NID : AdministracionUsuarios.obj.created[0].PEPE_NID,
                                        PEPE_NOMBRE : AdministracionUsuarios.obj.created[0].PEPE_NOMBRE
                                    }]
                                });
                                AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil.setValue(AdministracionUsuarios.obj.created[0].PEPE_NID);
                            }
                            
                            if (AdministracionUsuarios.obj.created[0].ESES_NID != 2){
                                AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Store_cmbEstado.loadData({
                                    data : [{
                                        ESES_NID : AdministracionUsuarios.obj.created[0].ESES_NID,
                                        ESES_DESCRIPCION : AdministracionUsuarios.obj.created[0].ESES_DESCRIPCION
                                    }]
                                });
                                AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbEstado.setValue(AdministracionUsuarios.obj.created[0].ESES_NID);
                            }
                            
                            AdministracionUsuarios.idUsuario = AdministracionUsuarios.obj.created[0].USUS_NID;
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.setValue(AdministracionUsuarios.obj.created[0].USUS_RUT);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.setValue(AdministracionUsuarios.obj.created[0].USUS_USUARIO);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtNombres.setValue(AdministracionUsuarios.obj.created[0].USUS_NOMBRE);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmail.setValue(AdministracionUsuarios.obj.created[0].USUS_EMAIL);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAPaterno.setValue(AdministracionUsuarios.obj.created[0].USUS_APPATERNO);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAMaterno.setValue(AdministracionUsuarios.obj.created[0].USUS_APMATERNO);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtTelefono.setValue(AdministracionUsuarios.obj.created[0].USUS_TELEFONO);

                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.readOnly = true;
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana.setTitle('Edición de usuario');
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar.setText('Guardar cambios');
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar.setIconClass('btnUsuarioEditar');
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.focus(true, 500);
                            AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana.show();
                        }
                    }
                    else{
                        AdministracionUsuarios.idUsuario = 0;
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtNombres.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmail.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAPaterno.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAMaterno.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtTelefono.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil.reset();
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana.setTitle('Creación de usuario');
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar.setText('Crear usuario');
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Boton_Guardar.setIconClass('btnUsuarioAgregar');
                        AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.focus(true, 500);
                    }
                    
                }
                else{
                    winProcess.hide();
                    Ext.MessageBox.show({
                        title : 'Información',
                        msg : AdministracionUsuarios.obj.errors.desc,
                        buttons : Ext.Msg.OK,
                        icon : Ext.MessageBox.INFO
                    });
                }
            }
        },
        failure : function(resp, opt) {
            Ext.MessageBox.hide();
            Ext.MessageBox.show({
                title : 'ERROR',
                msg : 'No se pudo establecer comunicacion con el servidor.',
                buttons : Ext.Msg.OK,
                icon : Ext.MessageBox.ERROR
            });
            AdministracionUsuarios.Estado = true;
        }
    });
    AdministracionUsuarios.rutUsuario = 0;
}

AdministracionUsuarios.fncGrabaDatosUsuarios = function() {
    if (AdministracionUsuarios.Estado) {
        AdministracionUsuarios.Estado = false;
        Ext.Ajax.timeout = 90000000;
        Ext.MessageBox.wait('Grabando... Por favor espere...');
        Ext.Ajax.request({
            url : AdministracionUsuarios.url,
            params : {
                accion : 'guardaDatosUsuario',
                idUsuario : AdministracionUsuarios.idUsuario,
                rut : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.getValue(),
                usuario : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.getValue(),
                nombre : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtNombres.getValue(),
                appaterno : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAPaterno.getValue(),
                apmaterno : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtAMaterno.getValue(),
                email : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtEmail.getValue(),
                telefono : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtTelefono.getValue(),
                perfil : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbPerfil.getValue(),
                estado : AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_cmbEstado.getValue()
            },
            method : 'POST',
            success : function(action) {
                if (action.responseText != 'nosession') {
                    AdministracionUsuarios.obj = Ext.util.JSON.decode(action.responseText);
                    Ext.MessageBox.hide();
                    if (AdministracionUsuarios.obj.success) {
                        if (AdministracionUsuarios.obj.created[0].NUM_ERROR == 0){
                            Ext.MessageBox.show({
                                title : 'INFORMACION',
                                msg : AdministracionUsuarios.obj.created[0].GLS_ERROR,
                                buttons : Ext.Msg.OK,
                                icon : Ext.MessageBox.INFO,
                                fn : function() {
                                    AdministracionUsuarios.storeGrillaAdmUsuarios.reload();
                                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Ventana.close();
                                }
                            });
                            AdministracionUsuarios.idUsuario = AdministracionUsuarios.obj.created[0].USUS_NID;
                        }
                        if (AdministracionUsuarios.obj.created[0].NUM_ERROR == 1){
                            Ext.MessageBox.show({
                                title : 'INFORMACION',
                                msg : AdministracionUsuarios.obj.created[0].GLS_ERROR,
                                buttons : Ext.Msg.OK,
                                icon : Ext.MessageBox.INFO,
                                fn : function() {
                                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtRut.focus(true, 10);
                                }
                            });
                            AdministracionUsuarios.idUsuario = AdministracionUsuarios.obj.created[0].USUS_NID;
                        }
                        if (AdministracionUsuarios.obj.created[0].NUM_ERROR == 2){
                            Ext.MessageBox.show({
                                title : 'INFORMACION',
                                msg : AdministracionUsuarios.obj.created[0].GLS_ERROR,
                                buttons : Ext.Msg.OK,
                                icon : Ext.MessageBox.INFO,
                                fn : function() {
                                    AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtUsuario.focus(true, 10);
                                }
                            });
                            AdministracionUsuarios.idUsuario = AdministracionUsuarios.obj.created[0].USUS_NID;
                        }
                    }
                    else {
                        Ext.MessageBox.show({
                            title : 'ERROR',
                            msg : AdministracionUsuarios.obj.errors.desc,
                            buttons : Ext.Msg.OK,
                            icon : Ext.MessageBox.ERROR
                        });
                    }
                    AdministracionUsuarios.Estado = true;
                }
            },
            failure : function(resp, opt) {
                Ext.MessageBox.hide();
                Ext.MessageBox.show({
                    title : 'ERROR',
                    msg : 'No se pudo establecer comunicacion con el servidor.',
                    buttons : Ext.Msg.OK,
                    icon : Ext.MessageBox.ERROR
                });
                AdministracionUsuarios.Estado = true;
            }

        });
    }
}

function fncValidaPassIguales() {
    var password1 = AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtPassword.getValue();
    var password2 = AdministracionUsuarios.fncCreaVenatanaFormularioUsuario.Campo_txtPassword2.getValue();
    if (password1 != '' && password2 != '') {
        if (password1 != password2) {
            return 'Las contraseñas no coinciden.';
        } else {
            return true;
        }
    } else {
        return true;
    }
}

AdministracionUsuarios.fncEliminarUsuario = function(rowIndex) {
    Ext.Ajax.timeout = 90000000;
    Ext.MessageBox.wait('Eliminando... Por favor espere...');
    Ext.Ajax.request({
        url : AdministracionUsuarios.url,
        params : {
            accion : 'eliminarUsuario',
            p_int_nid_usuario : AdministracionUsuarios.rowSelectionModelGrillaAdmUsuarios.record.data.USUS_NID
        },
        method : 'POST',
        success : function(resp, opt) {
            if (resp.responseText != 'nosession') {
                Ext.MessageBox.hide();
                AdministracionUsuarios.obj = Ext.util.JSON.decode(resp.responseText);
                if (AdministracionUsuarios.obj.success){
                    if (AdministracionUsuarios.obj.created[0].NUM_ERROR == 0){
                        Ext.MessageBox.show({
                            title : 'INFORMACION',
                            msg : AdministracionUsuarios.obj.created[0].GLS_ERROR,
                            buttons : Ext.Msg.OK,
                            icon : Ext.MessageBox.INFO,
                            fn: function(){
                                AdministracionUsuarios.storeGrillaAdmUsuarios.data.removeAt(rowIndex);
                                if (AdministracionUsuarios.storeGrillaAdmUsuarios.getCount() == 0) {
                                    AdministracionUsuarios.toolBalGrilla.movePrevious();
                                }
                                else{
                                    AdministracionUsuarios.storeGrillaAdmUsuarios.reload();
                                }
                            }
                        });
                    }
                    if (AdministracionUsuarios.obj.created[0].NUM_ERROR == 1){
                        Ext.MessageBox.show({
                            title : 'INFORMACION',
                            msg : AdministracionUsuarios.obj.created[0].GLS_ERROR,
                            buttons : Ext.Msg.OK,
                            icon : Ext.MessageBox.INFO
                        });
                    }
                    if (AdministracionUsuarios.obj.created[0].NUM_ERROR == 2){
                        Ext.MessageBox.show({
                            title : 'INFORMACION',
                            msg : AdministracionUsuarios.obj.created[0].GLS_ERROR,
                            buttons : Ext.Msg.OK,
                            icon : Ext.MessageBox.INFO,
                            fn: function(){
                                AdministracionUsuarios.storeGrillaAdmUsuarios.reload();
                            }
                        });
                    }
                }
            }
        },
        failure : function(resp, opt) {
            Ext.MessageBox.hide();
            Ext.MessageBox.show({
                title : 'ERROR',
                msg : 'No se pudo establecer comunicacion con el servidor.',
                buttons : Ext.Msg.OK,
                icon : Ext.MessageBox.ERROR
            });
        }

    });
}